// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov.
// Jad home page: http://www.geocities.com/kpdus/jad.html
// Decompiler options: braces fieldsfirst space lnc
package com.google.gson.internal;
import java.io.Serializable;
import java.util.AbstractMap;
import java.util.Comparator;
import java.util.LinkedHashMap;
import java.util.Set;
// Referenced classes of package com.google.gson.internal:
// q, w, r, t
public final class LinkedTreeMap extends AbstractMap
implements Serializable
{
static final boolean f;
private static final Comparator g = new q();
Comparator a;
w b;
int c;
int d;
final w e;
private r h;
private t i;
public LinkedTreeMap()
{
this(g);
}
public LinkedTreeMap(Comparator comparator)
{
c = 0;
d = 0;
e = new w();
if (comparator == null)
{
comparator = g;
}
a = comparator;
}
private void a(w w1)
{
w w2 = w1.b;
w w3 = w1.c;
w w4 = w3.b;
w w5 = w3.c;
w1.c = w4;
if (w4 != null)
{
w4.a = w1;
}
a(w1, w3);
w3.b = w1;
w1.a = w3;
int j;
int k;
int l;
int i1;
if (w2 != null)
{
j = w2.h;
} else
{
j = 0;
}
if (w4 != null)
{
k = w4.h;
} else
{
k = 0;
}
w1.h = 1 + Math.max(j, k);
l = w1.h;
i1 = 0;
if (w5 != null)
{
i1 = w5.h;
}
w3.h = 1 + Math.max(l, i1);
}
private void a(w w1, w w2)
{
w w3 = w1.a;
w1.a = null;
if (w2 != null)
{
w2.a = w3;
}
if (w3 != null)
{
if (w3.b == w1)
{
w3.b = w2;
return;
}
if (!f && w3.c != w1)
{
throw new AssertionError();
} else
{
w3.c = w2;
return;
}
} else
{
b = w2;
return;
}
}
private boolean a(Object obj, Object obj1)
{
return obj == obj1 || obj != null && obj.equals(obj1);
}
private void b(w w1)
{
w w2 = w1.b;
w w3 = w1.c;
w w4 = w2.b;
w w5 = w2.c;
w1.b = w5;
if (w5 != null)
{
w5.a = w1;
}
a(w1, w2);
w2.c = w1;
w1.a = w2;
int j;
int k;
int l;
int i1;
if (w3 != null)
{
j = w3.h;
} else
{
j = 0;
}
if (w5 != null)
{
k = w5.h;
} else
{
k = 0;
}
w1.h = 1 + Math.max(j, k);
l = w1.h;
i1 = 0;
if (w4 != null)
{
i1 = w4.h;
}
w2.h = 1 + Math.max(l, i1);
}
private void b(w w1, boolean flag)
{
_L11:
if (w1 == null) goto _L2; else goto _L1
_L1:
w w2;
w w3;
int j;
int k;
int l;
w2 = w1.b;
w3 = w1.c;
w w6;
w w7;
if (w2 != null)
{
j = w2.h;
} else
{
j = 0;
}
if (w3 != null)
{
k = w3.h;
} else
{
k = 0;
}
l = j - k;
if (l != -2) goto _L4; else goto _L3
_L3:
w6 = w3.b;
w7 = w3.c;
int l1;
int i2;
int j2;
if (w7 != null)
{
l1 = w7.h;
} else
{
l1 = 0;
}
if (w6 != null)
{
i2 = w6.h;
} else
{
i2 = 0;
}
j2 = i2 - l1;
if (j2 == -1 || j2 == 0 && !flag)
{
a(w1);
} else
{
if (!f && j2 != 1)
{
throw new AssertionError();
}
b(w3);
a(w1);
}
if (!flag) goto _L5; else goto _L2
_L2:
return;
_L4:
if (l != 2) goto _L7; else goto _L6
_L6:
w w4 = w2.b;
w w5 = w2.c;
int i1;
int j1;
int k1;
if (w5 != null)
{
i1 = w5.h;
} else
{
i1 = 0;
}
if (w4 != null)
{
j1 = w4.h;
} else
{
j1 = 0;
}
k1 = j1 - i1;
if (k1 == 1 || k1 == 0 && !flag)
{
b(w1);
} else
{
if (!f && k1 != -1)
{
throw new AssertionError();
}
a(w2);
b(w1);
}
if (flag) goto _L2; else goto _L5
_L5:
w1 = w1.a;
continue; /* Loop/switch isn't completed */
_L7:
if (l != 0)
{
break; /* Loop/switch isn't completed */
}
w1.h = j + 1;
if (flag)
{
return;
}
if (true) goto _L5; else goto _L8
_L8:
if (!f && l != -1 && l != 1)
{
throw new AssertionError();
}
w1.h = 1 + Math.max(j, k);
if (flag) goto _L5; else goto _L9
_L9:
return;
if (true) goto _L11; else goto _L10
_L10:
}
private Object writeReplace()
{
return new LinkedHashMap(this);
}
w a(Object obj)
{
w w1 = null;
if (obj != null)
{
w w2;
try
{
w2 = a(obj, false);
}
catch (ClassCastException classcastexception)
{
return null;
}
w1 = w2;
}
return w1;
}
w a(Object obj, boolean flag)
{
Comparator comparator;
w w1;
comparator = a;
w1 = b;
if (w1 == null) goto _L2; else goto _L1
_L1:
w w3;
Comparable comparable;
int k;
if (comparator == g)
{
comparable = (Comparable)obj;
} else
{
comparable = null;
}
_L11:
if (comparable != null)
{
k = comparable.compareTo(w1.f);
} else
{
k = comparator.compare(obj, w1.f);
}
if (k != 0) goto _L4; else goto _L3
_L3:
w3 = w1;
_L8:
return w3;
_L4:
w w2;
int j;
w w4;
w w6;
if (k < 0)
{
w6 = w1.b;
} else
{
w6 = w1.c;
}
if (w6 != null) goto _L6; else goto _L5
_L5:
int l = k;
w2 = w1;
j = l;
_L13:
w3 = null;
if (!flag) goto _L8; else goto _L7
_L7:
w4 = e;
if (w2 != null) goto _L10; else goto _L9
_L6:
w1 = w6;
goto _L11
_L9:
w w5;
if (comparator == g && !(obj instanceof Comparable))
{
throw new ClassCastException((new StringBuilder()).append(obj.getClass().getName()).append(" is not Comparable").toString());
}
w5 = new w(w2, obj, w4, w4.e);
b = w5;
_L12:
c = 1 + c;
d = 1 + d;
return w5;
_L10:
w5 = new w(w2, obj, w4, w4.e);
if (j < 0)
{
w2.b = w5;
} else
{
w2.c = w5;
}
b(w2, true);
if (true) goto _L12; else goto _L2
_L2:
w2 = w1;
j = 0;
goto _L13
}
w a(java.util.Map.Entry entry)
{
w w1 = a(entry.getKey());
boolean flag;
if (w1 != null && a(w1.g, entry.getValue()))
{
flag = true;
} else
{
flag = false;
}
if (flag)
{
return w1;
} else
{
return null;
}
}
void a(w w1, boolean flag)
{
if (flag)
{
w1.e.d = w1.d;
w1.d.e = w1.e;
}
w w2 = w1.b;
w w3 = w1.c;
w w4 = w1.a;
if (w2 != null && w3 != null)
{
w w5;
w w6;
int j;
w w7;
int k;
if (w2.h > w3.h)
{
w5 = w2.b();
} else
{
w5 = w3.a();
}
a(w5, false);
w6 = w1.b;
if (w6 != null)
{
j = w6.h;
w5.b = w6;
w6.a = w5;
w1.b = null;
} else
{
j = 0;
}
w7 = w1.c;
k = 0;
if (w7 != null)
{
k = w7.h;
w5.c = w7;
w7.a = w5;
w1.c = null;
}
w5.h = 1 + Math.max(j, k);
a(w1, w5);
return;
}
if (w2 != null)
{
a(w1, w2);
w1.b = null;
} else
if (w3 != null)
{
a(w1, w3);
w1.c = null;
} else
{
a(w1, ((w) (null)));
}
b(w4, false);
c = -1 + c;
d = 1 + d;
}
w b(Object obj)
{
w w1 = a(obj);
if (w1 != null)
{
a(w1, true);
}
return w1;
}
public void clear()
{
b = null;
c = 0;
d = 1 + d;
w w1 = e;
w1.e = w1;
w1.d = w1;
}
public boolean containsKey(Object obj)
{
return a(obj) != null;
}
public Set entrySet()
{
r r1 = h;
if (r1 != null)
{
return r1;
} else
{
r r2 = new r(this);
h = r2;
return r2;
}
}
public Object get(Object obj)
{
w w1 = a(obj);
if (w1 != null)
{
return w1.g;
} else
{
return null;
}
}
public Set keySet()
{
t t1 = i;
if (t1 != null)
{
return t1;
} else
{
t t2 = new t(this);
i = t2;
return t2;
}
}
public Object put(Object obj, Object obj1)
{
if (obj == null)
{
throw new NullPointerException("key == null");
} else
{
w w1 = a(obj, true);
Object obj2 = w1.g;
w1.g = obj1;
return obj2;
}
}
public Object remove(Object obj)
{
w w1 = b(obj);
if (w1 != null)
{
return w1.g;
} else
{
return null;
}
}
public int size()
{
return c;
}
static
{
boolean flag;
if (!com/google/gson/internal/LinkedTreeMap.desiredAssertionStatus())
{
flag = true;
} else
{
flag = false;
}
f = flag;
}
}